// 全局状态 文件的储存
let state = {
    files: []
};

// DOM元素
let inputBox = document.getElementById('inputBox');
let fileInput = document.getElementById('fileInput');
let filePreviews = document.getElementById('filePreviews');
let sendBtn = document.getElementById('sendBtn');
let chatContainer = document.getElementById('chatContainer');

// 初始化事件监听
function init() {
    // 粘贴事件
    inputBox.addEventListener('paste', handlePaste);

    // 拖放事件
    inputBox.addEventListener('dragover', handleDragOver);
    inputBox.addEventListener('dragleave', handleDragLeave);
    inputBox.addEventListener('drop', handleDrop);

    // 文件选择
    fileInput.addEventListener('change', handleFileSelect);

    // 按钮事件
    sendBtn.addEventListener('click', sendMessage);

    // Enter键发送事件
    inputBox.addEventListener('keydown', handleKeyDown);

}

// 处理按键事件
function handleKeyDown(e) {
    // 按Enter键发送消息
    if (e.key === 'Enter' && !e.shiftKey) {
        e.preventDefault();
        sendMessage();
    }
}

// 处理粘贴事件
function handlePaste(e) {
    let items = e.clipboardData.items;

    for (let i = 0; i < items.length; i++) {
        let item = items[i];

        if (item.kind === 'file') {
            e.preventDefault();
            let file = item.getAsFile();
            addFile(file);
        }
    }
}

// 处理拖放事件
function handleDragOver(e) {
    e.preventDefault();
    inputBox.classList.add('drag-over');
}

function handleDragLeave() {
    inputBox.classList.remove('drag-over');
}

function handleDrop(e) {
    e.preventDefault();
    inputBox.classList.remove('drag-over');

    if (e.dataTransfer.files.length > 0) {
        let files = Array.from(e.dataTransfer.files);
        files.forEach(file => addFile(file));
    }
}

// 处理文件选择
function handleFileSelect(e) {
    let files = Array.from(e.target.files);
    files.forEach(file => addFile(file));
    // 重置input，允许选择相同文件
    e.target.value = '';
}

// 添加文件
function addFile(file) {
    state.files.push(file);
    renderFilePreview(file);
}

// 渲染文件预览
function renderFilePreview(file) {
    let previewItem = document.createElement('div');
    previewItem.className = 'file-preview-item';
    previewItem.setAttribute('data-file-name', file.name);

    // 获取文件扩展名
    let fileExt = file.name.split('.').pop().toLowerCase();
    let fileIcon = fileIcons[fileExt] || '📁';

    if (file.type.startsWith('image/')) {
        let img = document.createElement('img');
        img.src = URL.createObjectURL(file);
        previewItem.appendChild(img);
    } else {
        let icon = document.createElement('div');
        icon.className = 'file-icon';
        icon.textContent = fileIcon;
        previewItem.appendChild(icon);
    }

    let removeBtn = document.createElement('button');
    removeBtn.className = 'remove-btn';
    removeBtn.textContent = '×';
    removeBtn.setAttribute('title', '删除文件');
    removeBtn.addEventListener('click', (e) => {
        e.stopPropagation();
        removeFile(file);
        previewItem.remove();
    });
    previewItem.appendChild(removeBtn);

    filePreviews.appendChild(previewItem);
}

// 移除文件
function removeFile(file) {
    state.files = state.files.filter(f => f !== file);
}

// 获取输入内容
function getInputContent() {
    return {
        text: inputBox.innerText,
        html: inputBox.innerHTML,
        files: [...state.files]
    };
}

document.getElementById('friend-list').addEventListener('click', function (event) {
    let target = event.target;

    // 判断点击的是同意按钮
    if (target.classList.contains('agree')) {
        let listItem = target.closest('.friend-request');
        let friendId = listItem.getAttribute('friend-id');

        agreeRequest(friendId);

        listItem.remove();

        getFriendList();

        friendSessionList();

        console.log('同意好友请求，ID:', friendId);

    }

    if (target.classList.contains('refuse')) {
        let listItem = target.closest('.friend-request');
        let friendId = listItem.getAttribute('friend-id');

        // 执行你的业务逻辑
        listItem.remove();
        console.log('拒绝好友请求，ID:', friendId);
    }
});

$(".tab .tab-session").click();


// 发送消息
function sendMessage() {
    let content = getInputContent();

    console.log("输入 " + content.text);

    if (!content.text.trim() && content.files.length === 0) {
        return;
    }

    // 添加用户消息

    if (content.text.length != 0)
        sendMsg(content.text);

    if (content.files.length != 0) {
        sendFile(content.files);
        content.files = null;
    }

    // 清空输入
    clearInput();
}

// 初始化
document.addEventListener('DOMContentLoaded', init);

